//package cn.nfwx.tv.controller;
//
//import android.app.Activity;
//import android.os.Message;
//import android.support.v4.widget.SwipeRefreshLayout;
//import android.support.v7.widget.RecyclerView;
//import android.util.Log;
//import android.view.View;
//import android.view.ViewGroup;
//import android.view.animation.Animation;
//import android.view.animation.AnimationUtils;
//import android.widget.ImageView;
//import android.widget.LinearLayout;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.chad.library.adapter.base.BaseQuickAdapter;
//import com.google.gson.Gson;
//import com.google.gson.reflect.TypeToken;
//
//import org.greenrobot.eventbus.EventBus;
//import org.json.JSONObject;
//
//import java.lang.reflect.Type;
//import java.util.ArrayList;
//import java.util.Iterator;
//import java.util.List;
//
//import cn.nfwx.tv.R;
//import cn.nfwx.tv.adapter.MineSubcriptionAdapter2;
//import cn.nfwx.tv.base.NFWXApplication;
//import cn.nfwx.tv.callback.FinishListener;
//import cn.nfwx.tv.callback.ResponseListener;
//import cn.nfwx.tv.callback.ResponseWithFailListener;
//import cn.nfwx.tv.dao.SubscriptionDao;
//import cn.nfwx.tv.events.PlayEvents;
//import cn.nfwx.tv.helper.AccountHelper;
//import cn.nfwx.tv.manager.SubscriptionManager;
//import cn.nfwx.tv.model.ColumnListModel;
//import cn.nfwx.tv.model.ColumnModel;
//import cn.nfwx.tv.model.SubscriptionListModel;
//import cn.nfwx.tv.model.SubscriptionModel2;
//import cn.nfwx.tv.util.NetworkUtil;
//import cn.nfwx.tv.util.RecyclerViewUtil;
//import cn.nfwx.tv.util.SharePrefUtil;
//import cn.nfwx.tv.vo.ResultErrorVo;
//import cn.nfwx.tv.vo.SubDelete;
//import cn.nfwx.tv.widget.CustomLoadMoreView;
//
///**
// * Created by dell on 2017/11/15.
// */
//public class SubscriptionViewController implements SwipeRefreshLayout.OnRefreshListener, BaseQuickAdapter.RequestLoadMoreListener, View.OnClickListener {
//    private final static String TAG_LOG = SubscriptionViewController.class.getSimpleName();
//    private RecyclerView mRecyclerView;
//    private SwipeRefreshLayout minesub_refreshLayout;
//    private MineSubcriptionAdapter2 mAdapter;
//    private Activity activity;
//    private int pageNo = 1;
//    private int pageSize = 2;
//    private List<ColumnListModel> list;
//    private View notDataView;
//    private View errorView;
//    private ImageView empty_image, error_image;
//    private TextView empty_text, error_text;
//    private LinearLayout error_refresh_btn;
//    private List<SubscriptionModel2> mList = new ArrayList<SubscriptionModel2>();
//    private static final int NETWORK_ERROR_MSG = 1;
//
//
//    private List<SubscriptionListModel> listModels = new ArrayList<>();
//
//    public SubscriptionViewController(View view, Activity activity) {
//        this.activity = activity;
//        initView(view);
//    }
//
//    public void initView(View view) {
//        mRecyclerView = findView(view, R.id.mine_sub_recyclerView);
//        minesub_refreshLayout = findView(view, R.id.minesub_refreshLayout);
//        initRecyclerView(mRecyclerView);
//        errorView = activity.getLayoutInflater().inflate(R.layout.dialog_network_error, (ViewGroup) mRecyclerView.getParent(), false);
//        notDataView = activity.getLayoutInflater().inflate(R.layout.view_nodata, (ViewGroup) mRecyclerView.getParent(), false);
//        error_image = errorView.findViewById(R.id.error_image);
//        error_text = errorView.findViewById(R.id.error_text);
//        empty_image = notDataView.findViewById(R.id.empty_image);
//        empty_text = notDataView.findViewById(R.id.empty_text);
//        error_refresh_btn = errorView.findViewById(R.id.error_refresh_btn);
//        empty_image.setImageResource(R.mipmap.empty_subscribe);
//        empty_text.setText("暂无订阅");
//        minesub_refreshLayout.setOnRefreshListener(this);
//        error_refresh_btn.setOnClickListener(this);
//    }
//
//
//    public void setData() {
//        pageNo = 1;
//        listModels.clear();
//        mList.clear();
//        SubscriptionManager.requestMySubscriptionList(activity, pageNo, pageSize, SharePrefUtil.getUser(activity).getAccess_token(), new ResponseWithFailListener<String>() {
//            @Override
//            public void onResponse(final String requestTag, final String response) {
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        Log.d(TAG_LOG, "sub_response" + response);
//                        if (response != null && !"".equals(response)) {
//                            Gson gson = new Gson();
//                            Type type = new TypeToken<ArrayList<SubscriptionModel2>>() {
//                            }.getType();
//                            final List<SubscriptionModel2> rs = gson.fromJson(response.toString(), type);
//
//                            mList.addAll(rs);
//                            if (rs.size() == 0) {
//                                mAdapter.setEmptyView(notDataView);
//                            } else {
//                                SubscriptionDao dao = new SubscriptionDao(activity);
//                                dao.addList(rs);
//                                for (int i = 0; i < rs.size(); i++) {
//                                    SubscriptionListModel subscriptionListModel = new SubscriptionListModel();
//                                    subscriptionListModel.setTitlePosition(i);
//                                    subscriptionListModel.setSubscriptionModel(rs.get(i));
//                                    listModels.add(subscriptionListModel);
//                                    getListVideo(i, rs.get(i), rs.get(i).getCid());
//                                }
//                            }
//                        }
//                    }
//                });
//
//
//            }
//
//            @Override
//            public void onError(String requestTag, Throwable t) {
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        minesub_refreshLayout.setRefreshing(false);
//                        if (!NetworkUtil.hasNetwork(activity)) {
//                            error_image.setImageResource(R.mipmap.player_nointernet);
//                            error_text.setText("世界上最遥远的距离就是断网");
//                        } else {
//                            error_image.setImageResource(R.mipmap.player_fail);
//                            error_text.setText("加载失败了，点我重试");
//                        }
//                        mAdapter.setEmptyView(errorView);
//                    }
//                });
//            }
//
//            @Override
//            public void onFail(String requestTag, String response) {
//                Gson gson = new Gson();
//                ResultErrorVo resultErrorVo = gson.fromJson(response, ResultErrorVo.class);
//                if ("AUTH".equals(resultErrorVo.getCode())) {
//                    NFWXApplication.getInstance().refreshTokenData(new FinishListener() {
//                        @Override
//                        public void onFinish() {
//                            setData();
//                        }
//                    });
//                }
//            }
//
//            @Override
//            public void onFinish() {
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        minesub_refreshLayout.setRefreshing(false);
//                    }
//                });
//            }
//
//        });
//    }
//
//
//    public void setMoreData() {
//        pageNo = pageNo + 1;
//        SubscriptionManager.requestMySubscriptionList(activity, pageNo, pageSize, SharePrefUtil.getUser(activity).getAccess_token(), new ResponseWithFailListener<String>() {
//            @Override
//            public void onResponse(String requestTag, String response) {
//                if (response != null && !"".equals(response)) {
//                    Gson gson = new Gson();
//                    Type type = new TypeToken<ArrayList<SubscriptionModel2>>() {
//                    }.getType();
//                    final List<SubscriptionModel2> rs = gson.fromJson(response.toString(), type);
//
//                    mList.addAll(rs);
//                    activity.runOnUiThread(new Runnable() {
//                        @Override
//                        public void run() {
//                            SubscriptionDao dao = new SubscriptionDao(activity);
//                            dao.addList(rs);
//                            if (rs.size() < pageSize) {
//                                mAdapter.loadMoreEnd(true);
//                            } else {
//                                mAdapter.loadMoreComplete();
//                            }
//
//                        }
//                    });
//                    int oldPosition = listModels.size();
//                    for (int i = 0; i < rs.size(); i++) {
//                        SubscriptionListModel subscriptionListModel = new SubscriptionListModel();
//                        subscriptionListModel.setTitlePosition(oldPosition + i);
//                        subscriptionListModel.setSubscriptionModel(rs.get(i));
//                        listModels.add(subscriptionListModel);
//                        getListVideo(i, rs.get(i), rs.get(i).getCid());
//                    }
//                }
//
//            }
//
//            @Override
//            public void onFail(String requestTag, String response) {
//
//            }
//
//            @Override
//            public void onError(String requestTag, Throwable t) {
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        mAdapter.loadMoreComplete();
//                    }
//                });
//            }
//
//            @Override
//            public void onFinish() {
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        mAdapter.loadMoreComplete();
//                    }
//                });
//            }
//        });
//
//    }
//
//    public void bindData() {
//        List<Object> datas = new ArrayList<>();
//        for (int i = 0; i < listModels.size(); i++) {
//            SubscriptionListModel subscriptionListModel = listModels.get(i);
//            datas.addAll(subscriptionListModel.getEllipsisList());
//        }
//        mAdapter.setNewData(datas);
//        if (listModels.size() == 0) {
//            mAdapter.setEmptyView(notDataView);
//        }
//
//    }
//
//    public void getListVideo(int position, final SubscriptionModel2 mData, final String cid) {
//        SubscriptionManager.requestVideoList(activity, cid, new ResponseListener() {
//            @Override
//            public void onResponse(String requestTag, final Object response) {
//                activity.runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        try {
//                            JSONObject jsonObject = new JSONObject(response.toString());
//                            if ("OK".equals(jsonObject.optString("code"))) {
//                                Gson gson = new Gson();
//                                Type type = new TypeToken<ArrayList<ColumnModel>>() {
//                                }.getType();
//                                List<ColumnModel> rs = gson.fromJson(jsonObject.optString("result"), type);
//
//                                for (SubscriptionListModel subscriptionListModel : listModels) {
//                                    if (subscriptionListModel.getSubscriptionModel().getCid().equals(cid)) {
//                                        subscriptionListModel.setList(rs);
//                                        bindData();
//                                        break;
//                                    }
//                                }
//                            }
//
//                        } catch (Exception e) {
//                            e.printStackTrace();
//                        }
//                    }
//                });
//            }
//
//            @Override
//            public void onError(String requestTag, Throwable t) {
//
//            }
//
//            @Override
//            public void onFinish() {
//
//            }
//        });
//    }
//
//
//    public void initRecyclerView(RecyclerView recyclerView) {
//        RecyclerViewUtil.setLinearLayoutManagerWithoutDivder(recyclerView.getContext(), recyclerView);
//        mAdapter = new MineSubcriptionAdapter2();
//        mAdapter.setLoadMoreView(new CustomLoadMoreView());
//        mAdapter.setOnLoadMoreListener(this);
//        recyclerView.setAdapter(mAdapter);
//
//        mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
//            @Override
//            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
//                if (adapter.getItemViewType(position) == MineSubcriptionAdapter2.ITEM_PART2) {
//                    Object object = adapter.getData().get(position);
//                    if (object instanceof SubscriptionListModel.TilteModel) {
//                        SubscriptionListModel.TilteModel model = (SubscriptionListModel.TilteModel) object;
//                        int titlePosition = model.position;
//                        boolean isLoadMore = model.isLoadMore;
//                        SubscriptionListModel listModel = listModels.get(titlePosition);
//                        List<Object> objects = listModel.getMoreList();
//                        TextView textView= ((TextView) view.findViewById(R.id.tv_load_more));
//                        if (isLoadMore) {
//
//                            for (int j = 0; j < objects.size(); j++) {
//                                adapter.remove(position - 1 - j);
//                            }
//                            model.isLoadMore = false;
//                            textView.setText(R.string.load_more);
//
//                        } else {
//
//                            adapter.addData(position, objects);
//                            model.isLoadMore = true;
//                            textView.setText(R.string.ellipsis);
//
//
//                        }
//
//
//
//                    }
//                } else if (adapter.getData().get(position) instanceof ColumnModel) {
//                    ColumnModel columnModel = (ColumnModel) adapter.getData().get(position);
//                    //VodPlayerActivity.startActivity(activity, columnModel.getPlaypath(), columnModel.getVsid(), columnModel.getName(), 0);
//                    EventBus.getDefault().post(new PlayEvents(columnModel.getPlaypath(), null, columnModel.getName(),0));
//                }
//            }
//        });
//        mAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
//            @Override
//            public void onItemChildClick(final BaseQuickAdapter adapter, View view, final int position) {
//
//                if (adapter.getData().get(position) instanceof SubscriptionModel2) {
//                    switch (view.getId()) {
//                        case R.id.subscription_cancle_btn:
//                            if (AccountHelper.getInstance().isLogin(activity)) {
//                                final SubscriptionModel2 model = (SubscriptionModel2) adapter.getData().get(position);
//                                Gson gson = new Gson();
//                                SubDelete subDelete = new SubDelete();
//                                subDelete.setCid(model.getCid());
//                                SubscriptionManager.cancelSubscribe(activity, gson.toJson(subDelete), SharePrefUtil.getUser(activity).getAccess_token(), new ResponseListener<String>() {
//                                    @Override
//                                    public void onResponse(String requestTag, final String response) {
//                                        activity.runOnUiThread(new Runnable() {
//                                            @Override
//                                            public void run() {
//                                                if ("true".equals(response)) {
//                                                    SubscriptionDao dao = new SubscriptionDao(activity);
//                                                    dao.delete(model);
//                                                    Toast.makeText(activity, "取消订阅成功", Toast.LENGTH_SHORT).show();
//                                                    changeDeleteData(model);
//                                                }
//                                            }
//                                        });
//                                    }
//
//                                    @Override
//                                    public void onError(String requestTag, Throwable t) {
//
//                                        activity.runOnUiThread(new Runnable() {
//                                            @Override
//                                            public void run() {
//
//                                                Toast.makeText(activity, "取消订阅失败", Toast.LENGTH_SHORT).show();
//                                            }
//                                        });
//                                    }
//
//                                    @Override
//                                    public void onFinish() {
//
//                                    }
//                                });
//                            }
//                            break;
//                    }
//                }
//            }
//        });
//
//    }
//
//
//    /**
//     * 查找控件
//     *
//     * @param rid
//     * @param <T>
//     * @return
//     */
//    public <T extends View> T findView(View view, int rid) {
//        return (T) view.findViewById(rid);
//    }
//
//
//    public void changeDeleteData(SubscriptionModel2 model) {
//        Iterator<SubscriptionListModel> it = listModels.iterator();
//        while (it.hasNext()) {
//            SubscriptionListModel subscriptionListModel = it.next();
//            if (subscriptionListModel.getSubscriptionModel().getCid().equals(model.getCid())) {
//                it.remove();
//            }
//        }
//        bindData();
//    }
//
//    @Override
//    public void onRefresh() {
//        setData();
//    }
//
//    @Override
//    public void onLoadMoreRequested() {
//        setMoreData();
//    }
//
//    @Override
//    public void onClick(View view) {
//        switch (view.getId()) {
//            case R.id.error_refresh_btn:
//                error_image.setImageResource(R.drawable.footer_loading_progress);
//                Animation rotate = AnimationUtils.loadAnimation(activity, R.anim.rotate_anim);
//                error_image.startAnimation(rotate);
//                mHandler.sendEmptyMessageDelayed(NETWORK_ERROR_MSG, 1000);
//                break;
//        }
//    }
//
//    private android.os.Handler mHandler = new android.os.Handler() {
//        @Override
//        public void dispatchMessage(Message msg) {
//            super.dispatchMessage(msg);
//            switch (msg.what) {
//                case NETWORK_ERROR_MSG:
//                    setData();
//                    break;
//            }
//        }
//    };
//}
